﻿////////////////////////////////////////////////////////////////////////////
// 
// Copyright (C) 2007 e-Channels CORPORATION
// 
// ALL RIGHTS RESERVED BY e-Channels CORPORATION, THIS PROGRAM
// MUST BE USED SOLELY FOR THE PURPOSE FOR WHICH IT WAS  
// FURNISHED BY e-Channels CORPORATION, NO PART OF THIS PROGRAM
// MAY BE REPRODUCED OR DISCLOSED TO OTHERS, IN ANY FORM
// WITHOUT THE PRIOR WRITTEN PERMISSION OF e-Channels CORPORATION.
// USE OF COPYRIGHT NOTICE DOES NOT EVIDENCE PUBLICATION
// OF THE PROGRAM
// 
//			e-Channels CONFIDENTIAL AND PROPRIETARY
// 
////////////////////////////////////////////////////////////////////////////
// 
// $Log: Resource.java,v $
// Revision 1.2  2010/10/29 09:29:26  base_dev_guoxiaofeng
// �޸�����
//
// Revision 1.1  2009/07/04 06:51:36  base_dev_fuwei
// ��ʼ�汾
//
// Revision 1.2  2009/03/16 10:26:43  zhuding
// ͳһ�޸��ļ�����ΪUTF-8
//
// Revision 1.1  2008/05/05 12:28:27  zhanghao
// 初始版本
//
// Revision 1.4  2008/04/15 06:45:49  zhanghao
// 版本合并
//
// Revision 1.3  2007/08/21 06:32:28  zhanghao
// 重构
//
// Revision 1.2  2007/08/16 07:41:14  zhanghao
// 重构
//
// Revision 1.1  2007/07/23 07:50:23  zhanghao
// For EMP 重构版本
//
// Revision 1.5  2006/12/11 03:09:35  zhanghao
// 修正Bug
//
// Revision 1.4  2006/12/11 02:54:14  zhanghao
// 添加重复资源和语种的异常处理
//
// Revision 1.3  2006/12/05 05:50:23  zhanghao
// put和get时将语种自动转换成大写
//
// Revision 1.2  2006/12/05 03:14:00  zhanghao
// 重构
//
// Revision 1.1  2006/12/04 03:55:47  zhanghao
// 用于页面多语言显示的资源处理类
//
//
package cn.com.zzz.tag;

import java.util.HashMap;
import java.util.Map;

import cn.bbs.ba.exception.BAException;


/**
 * Liana 语言资源实体类
 * 
 * @version 1.1 2007-07-23
 * @author zhanghao@yuchengtech.com
 */
public class Resource {
	/**
	 * 资源名称
	 */
	private String itsName;
	/**
	 * 资源所有语种相应数据
	 */
	private Map valueMap = new HashMap();

	/**
	 * 构造函数
	 * 
	 * @param name
	 *            资源名称（简体中文）
	 */
	public Resource(String name) {
		this.itsName = name;
	}

	/**
	 * 添加某语种对应的显示信息
	 * 
	 * @param language
	 *            语种标识，如EN_US
	 * @param value
	 *            语种对应的显示信息
	 * @throws TranFailException
	 */
	public void addLanguage( String language, String value ) throws BAException
	{
		if ( valueMap.containsKey( language.toUpperCase() ) )
		{
			throw new BAException("重复的语种定义：" + itsName + "." + language );
		}
		valueMap.put( language.toUpperCase(), value );
	}

	/**
	 * 取得资源名称（简体中文）
	 * 
	 * @return String
	 */
	public String getName()
	{
		return itsName;
	}

	/**
	 * 取得某语种对应的显示信息
	 * 
	 * @param language
	 *            语种标识，如EN_US
	 * @return 此语种对应的显示信息，如果此语种没用设置，则返回资源名称（简体中文）
	 */
	public String getValueAt( String language )
	{
		if ( language == null )
		{
			return itsName;
		}
		String result = (String) valueMap.get( language.toUpperCase() );
		if ( result == null )
		{
			result = itsName;
		}
		return result;
	}

	/**
	 * Constructs a <code>String</code> with all attributes in name = value format.
	 * 
	 * @return a <code>String</code> representation of this object.
	 */
	public String toString()
	{
		final String TAB = "    ";
		StringBuffer retValue = new StringBuffer();
		retValue.append( "Resource ( " ).append( super.toString() ).append( TAB ).append( "itsName = " ).append(
				this.itsName ).append( TAB ).append( "valueMap = " ).append( this.valueMap ).append( TAB )
				.append( " )" );
		return retValue.toString();
	}
}
